package com.chenbei.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chenbei.system.domain.SysUser;
import com.chenbei.system.domain.SysUserRole;
import com.chenbei.system.domain.SysRole;
import com.chenbei.system.vo.req.SysRoleReq;

import java.util.List;

public interface ISysUserRoleService extends IService<SysUserRole> {

    /**
     * 用户绑定多角色
     * @param userId 管理用户ID
     * @param roleIdList 角色ID集合
     */
    void userBindRoles(long userId, List<Long> roleIdList);

    /**
     * 角色绑定多用户
     * @param roleId 角色ID
     * @param userIdList 管理员用户集合
     */
    void roleBindUsers(long roleId, List<Long> userIdList);

    /**
     * 通过角色获取绑定的用户列表
     * @param sysRoleReq 请求实例
     * @return Page
     */
    Page<SysUser> boundUsers(SysRoleReq sysRoleReq);

    /**
     * 移除所有用户绑定角色
     * @param userId 管理员用户ID
     */
    void removeUserRoles(long userId);


    /**
     * 移除所有角色用户
     * @param roleId 角色ID
     */
    void removeRoleUsers(long roleId);

    /**
     * 通过用户ID获取角色列表
     * @param adminUserId 后台用户ID
     * @return List
     */
    List<SysRole> listByAdminUserId(Long adminUserId);
}
